package com.chris.code.generate.manager;

import com.chris.assist.config.Config;
import com.chris.assist.config.ConfigBuilder;

/**
 * @author Chris Chan
 * Create On 2025/9/26 下午1:58
 * Use for:
 * Explain:
 */
public class LocalTestConfigBuilder implements ConfigBuilder {
    /**
     * 私有化构造方法
     * 没什么实际意义，就是不让用
     */
    private LocalTestConfigBuilder() {
    }

    public static LocalTestConfigBuilder create() {
        return new LocalTestConfigBuilder();
    }

    /**
     * 获取配置文件
     *
     * @return
     */
    @Override
    public Config get() {
        Config config = Config.create();
        setupCommon(config);
        setupBizMap(config);

        setupDatabase(config,
                "art.chris.com:3306",
                "db_dragon_pear_01",
                "root",
                "root");
        setupSpringboot(config);
        setupAndroid(config);
        setupVue(config);

        return config;
    }

    /**
     * 通用配置
     *
     * @param config
     */
    @Override
    public void setupCommon(Config config) {
        config.author = "Chris Chan";
    }


    /**
     * Springboot配置
     *
     * @param config
     */
    @Override
    public void setupSpringboot(Config config) {
        // 项目路径 一定要使用这两个方法
        String prjRootPath = "G:\\Dev\\products\\dragon-models\\models\\pear\\server\\project-modules\\dragon-pear-modules-manage\\modules\\dragon-pear-modules-trade";

        config.springboot.setProjectPath(prjRootPath);
        config.springboot.setRootPackageName("com.dragon.pear");

        // 模块列表
        config.springboot.addModuleWithPath("trade", "trade", prjRootPath);
    }

    /**
     * Android配置
     *
     * @param config
     */
    @Override
    public void setupAndroid(Config config) {
        String androidProjectPath = "G:\\Dev\\products\\dragon-models\\models\\pear\\mobile\\android\\dragon-pear-app";

        config.app.android.projectPath = androidProjectPath;
        config.app.android.setModuleDir("app");
        config.app.android.moduleRootPackageName = "com.dragon.pear";
    }

    /**
     * Vue配置
     *
     * @param config
     */
    @Override
    public void setupVue(Config config) {
        String projectRootPath = "G:\\Dev\\products\\dragon-models\\models\\pear\\web\\dragon-pear-web-admin";
        config.vue.setProjectRootPath(projectRootPath);

    }

    @Override
    public void setupUniApp(Config config) {

    }

    @Override
    public void setupWxmp(Config config) {

    }

    @Override
    public void setupArkTs(Config config) {

    }

    /**
     * 业务映射配置
     *
     * @param config
     */
    @Override
    public void setupBizMap(Config config) {
        config.biz.add("user", "用户");
        config.biz.add("im", "实时通信");
        config.biz.add("record", "记录");
        config.biz.add("rec", "记录");
        config.biz.add("common", "公共");
        config.biz.add("uaa", "账户");

        config.biz.add("common_advice", "广告");
        config.biz.add("common_china_area_2019", "中国政区");
        config.biz.add("common_dict", "字典");
        config.biz.add("common_res", "资源");

        config.biz.add("uaa_account", "账户");
        config.biz.add("uaa_authority", "权限");
        config.biz.add("uaa_role", "角色");
        config.biz.add("uaa_third_account", "第三方账号");
        config.biz.add("uaa_map_account_role", "用户角色");
        config.biz.add("uaa_map_role_authority", "角色权限");

        // 尝试三种添加映射的方式
        config.biz.add("userAddress", "用户地址");
        config.biz.add("user_user_data", "用户数据");
        config.biz.add("useruserinfo", "用户信息");

        config.biz.add("im_chat_history", "聊天记录");
        config.biz.add("im_chat_room", "聊天室");
        config.biz.add("im_chat_user_room", "私聊");

        config.biz.add("reccard", "记录卡");
        config.biz.add("RecItem", "记录点");
        config.biz.add("rec_item_cate", "记录点类型");
        config.biz.add("recUserCard", "用户记录卡");

        config.biz.add("trade", "交易");
    }
}
